import com.cloudbees.groovy.cps.NonCPS
import groovy.transform.Field

/*
触发构建任务
* */

@Field Map paramMap = [:]

/**
 * 构建参数
 * @param cb
 * @return
 */
def params(Closure cb) {
    def paramList = buildParams(cb, true)
    if (!paramMap["parameters"]) {
        paramMap["parameters"] = []
    }
    if(paramList){
        paramMap["parameters"] += paramList
    }
}

/**
 * 构建名
 * @param name
 */
def name(String name) {
    paramMap["job"] = name
}

/**
 * 是否等待
 * @param flag
 */
def wait(Boolean flag) {
    paramMap["wait"] = flag
    if (!flag && paramMap.containsKey("propagate")) {
        paramMap.remove("propagate")
    }
}

/**
 * 构建失败是否会结果本步骤，默认为true。只有wait 为true时才会生效
 * @param flag
 */
def stopIfFail(Boolean flag) {
    if (!paramMap.containsKey("wait") || paramMap["wait"]) {
        paramMap["propagate"] = flag
    }
}

/**
 * 触发构建
 * @param n 构建名
 * @param cb 配置参数
 * @return
 */
def call(String n, Closure cb = null) {
    name(n)
    if (cb != null) {
        cb.delegate = this
        try {
            cb()
        } catch (Exception e) {
            Utils { printError(e) }
            error(e)
        }
    }
    build(paramMap)
}